//
//  MainUITabBarController.swift
//  MXWeiBo
//
//  Created by Apple on 16/2/21.
//  Copyright © 2016年 Applea. All rights reserved.
//

import UIKit

class MainUITabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
//在 viewIDidload 只是添加子控制器，不会创建 tabBar 的 UITabBarButton
//    tabBar 的按钮们只会在 viewWillAppear(将要显示) 方法之前
        addChildViewController()
        setupTabbar()
        
//        设置新特性
        showNewFeature()
    }
    
    override func viewWillAppear(animated: Bool) {
        
//        将按钮设置到顶部
        tabBar.bringSubviewToFront(addButton)
        
//        计算按钮宽度
         let width = tabBar.bounds.width / CGFloat(childViewControllers.count)-1 
        
//        CGRectInset:缩紧
//        >0,向内缩小
//        <0,向外
        addButton.frame=CGRectInset(tabBar.bounds, width*2, 0)
        
    }
//    MARK:懒加载方法2
    // －－－－－－－－－－－－－－－私有空间，设置➕－－－－－－－－－－－－－
    
    private lazy var addButton: UIButton = UIButton(
        title: nil,
        imageName: "tabbar_compose_icon_add",
        backImageName: "tabbar_compose_button")
//    {
////        1.创建对象
//        let button = UIButton()
//        
////        2.设置属性
//        let imgName="tabbar_compose_icon_add"
////        设置button的图片
//        
////         button.setImage(UIImage(named: imgName), forState: .Normal)
////        button.setImage(UIImage(named: imgName+"_highlighted"), forState: .Highlighted)
////        设置button的背景图片 tabbar_compose_button
//        let BackImgBackName="tabbar_compose_button"
//        button.setBackgroundImage(UIImage(named: BackImgBackName), forState: .Normal)
//        button.setBackgroundImage(UIImage(named: BackImgBackName+"_highlighted"), forState: .Highlighted)
//        
////      让按钮根据背景图片调整大小
//        button.sizeToFit()
//        
////        3.返回对象
//        return button
//    }()
    }


//MARK: －添加控制器
//    通过 extension 把相关的代码进行分组设置
    extension MainUITabBarController{
      
//       －－－－－－－－ 添加所有子控制器－－－－－－－
        private func addChildViewController() {
//            添加首页
            addChildViewController(HomeUITabBarController(), title: "首页", imgName:"tabbar_home")
            
//            添加信息
            addChildViewController(MessageUITabBarController(), title: "消息", imgName:"tabbar_message_center")

//            添加一个空白的控制器
             addChildViewController(UIViewController())
//            添加发现
            addChildViewController(DiscoverUITabBarController(), title: "发现", imgName:"tabbar_discover")
//            添加我
            addChildViewController(ProfileTableViewController(), title: "我", imgName:"tabbar_profile")
            
        }
//     －－－－－－－－－－ 添加控制器方法 －－－－－－－－－－－－
        private func addChildViewController(vc:UIViewController,title:String, imgName:String) {
            let vc=vc
//            从内向外设置
            vc.title=title
//            设置默认状态下的样式
            vc.tabBarItem.image = UIImage(named:imgName)
//            设置选中状态下的样式,默认情况下，tabBarItem的img会使用系统默认的颜色（蓝色）渲染，要想使用自己的，要设置imageWithRenderingMode
             vc.tabBarItem.selectedImage = UIImage(named: imgName + "_selected")?.imageWithRenderingMode(.AlwaysOriginal)
            
//            设置文本属性
            
//             -字体颜色(选中状态下)
            vc.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.orangeColor()], forState: .Selected)
//            －字体大小(默认状态下)
            vc.tabBarItem.setTitleTextAttributes([NSFontAttributeName:UIFont.systemFontOfSize(10)], forState: .Normal)
            
            let nav=UINavigationController(rootViewController: vc)
            addChildViewController(nav)
            
        }
}

//   -------------------设置tabbar-----------------------------
extension MainUITabBarController{
//        MARK：-设置tabbar
        private func setupTabbar(){
        
//            设置tabbar的背景图片，一下代码必须同时使用
//            如果提供图像，会自动拉伸
            tabBar.shadowImage = UIImage.MX_singletDotimage(UIColor(white: 0.9, alpha: 1.0))
            
            tabBar.backgroundImage = UIImage(named:"tabbar_background")
//       添加撰写按钮
//            Error:添加过后会不在中间现实，在后面，这时候要调用 viewWillAppear
            tabBar.addSubview(addButton)
    }
    }
  
//    MARK:  --新特性处理
extension MainUITabBarController {
// 显示新特性
    private func showNewFeature() {
    
    
//    1.如果没有登录直接返回
        if !UserAccount.sharedUserAccount.isLogin {
        
        return
        }
//        2.判断是否有新版本
        let v=isNewVersion ? NewFeatureView() : WelcomeView()
//        3.将视图添加到当前视图
        view.addSubview(v)
//
    }
//    是否有新版本
    private var isNewVersion: Bool {
    
        
//        1.获取当前版本
        let currentVersion = NSBundle.currentVersion
//        2.获取之前版本，保存在用户偏好
        let versionKey = "cn.iecast.key"
        let sandBoxVersion = NSUserDefaults.standardUserDefaults().stringForKey(versionKey)
        
//        3.将当前版本保存在用户偏好
        NSUserDefaults.standardUserDefaults().setObject(currentVersion, forKey: versionKey)
        
        print("新版本")
//        4.返回两个版本比较
//    return currentVersion > sandBoxVersion
        return true
    }
     
}


